﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//给你一个下标从 0 开始的整数数组 nums 。根据下述规则重排 nums 中的值：
//按 非递增 顺序排列 nums 奇数下标 上的所有值。
//举个例子，如果排序前 nums = [4, 1, 2, 3] ，对奇数下标的值排序后变为[4, 3, 2, 1] 。奇数下标 1 和 3 的值按照非递增顺序重排。
//按 非递减 顺序排列 nums 偶数下标 上的所有值。
//举个例子，如果排序前 nums = [4, 1, 2, 3] ，对偶数下标的值排序后变为[2, 1, 4, 3] 。偶数下标 0 和 2 的值按照非递减顺序重排。
//返回重排 nums 的值之后形成的数组。
//完成
//int cmpfunc2(const void* a, const void* b)
//{
//	return (*(int*)a - *(int*)b);
//}
//
//int cmpfunc1(const void* a, const void* b)
//{
//	return (*(int*)b - *(int*)a);
//}
//
//
//int* sortEvenOdd(int* nums, int numsSize, int* returnSize) {
//	*returnSize = numsSize;
//	int* arr1 = (int*)malloc(sizeof(int) * numsSize);
//	int* arr2 = (int*)malloc(sizeof(int) * numsSize);
//	int n1 = 0, n2 = 0;
//	int i = 0;
//	for (i = 0; i < numsSize; i++)
//	{
//		if (i % 2 != 0)
//		{
//			arr1[n1] = nums[i];
//			n1++;
//		}
//		else
//		{
//			arr2[n2] = nums[i];
//			n2++;
//		}
//	}
//	qsort(arr2, n2, sizeof(int), cmpfunc2);
//	qsort(arr1, n1, sizeof(int), cmpfunc1);
//	n1 = 0;
//	n2 = 0;
//	for (i = 0; i < numsSize; i++)
//	{
//		if (i % 2 == 1)
//		{
//			nums[i] = arr1[n1];
//			n1++;
//		}
//		else
//		{
//			nums[i] = arr2[n2];
//			n2++;
//		}
//	}
//	free(arr1);
//	free(arr2);
//	arr1 = NULL;
//	arr2 = NULL;
//	return nums;
//}
//int main()
//{
//	int arr[] = { 4, 1, 2, 3 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int num = 0;
//	sortEvenOdd(arr, sz, &num);
//	return 0;
//}

//bool checkString(char* s) {
//	while (*s)
//	{
//		if (*s == 'b')
//		{
//			if (*(s + 1) == 'a')
//				return false;
//		}
//		s++;
//	}
//	return true;
//}

//给你一个字符串 title ，它由单个空格连接一个或多个单词组成，每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 ：
//如果单词的长度为 1 或者 2 ，所有字母变成小写。
//否则，将单词首字母大写，剩余字母变成小写。
//请你返回 大写后 的 title 。
//
//char * capitalizeTitle(char * title){
//	int len = strlen(title);
//	int i = 0;
//	int flag = 0;
//	for (i = 0; i <= len; i++)
//	{
//		if (title[i] != ' ' && title[i] != '\0')
//		{
//			flag++;
//		}
//		else
//		{
//			if (flag <= 2)
//			{
//				while (flag)
//				{
//					title[i-flag]=tolower(title[i-flag]);
//					flag--;
//				}
//			}
//			else
//			{
//				title[i - flag] = toupper(title[i - flag]);
//				flag--;
//				while (flag)
//				{
//					title[i - flag] = tolower(title[i - flag]);
//					flag--;
//				}
//			}
//			flag = 0;
//		}
//	}
//	return title;
//}
//int main()
//{
//	char p[] = "capiTalIze tHe titLe";
//	capitalizeTitle(p);
//	printf("%s", p);
//	return 0;
//}

//int countGoodSubstrings(char* s) {
//	int len = strlen(s);
//	int flag = 0;
//	if (len < 3)
//		return 0;
//	else
//	{
//		int i = 0;
//		for (i = 0; i < len - 2; i++)
//		{
//			if (*s != *(s + 1) && *s != *(s + 2) && *(s + 1) != *(s + 2))
//				flag++;
//			s++;
//		}
//	}
//	return flag;
//}
//int main()
//{
//	char p[] = "aababcabc";
//	int ret = countGoodSubstrings(p);
//	printf("%d", ret);
//	return 0;
//}

//一个字符串如果没有 三个连续 相同字符，那么它就是一个 好字符串 。
//给你一个字符串 s ，请你从 s 删除 最少 的字符，使它变成一个 好字符串 。
//请你返回删除后的字符串。题目数据保证答案总是 唯一的 。
//char* makeFancyString(char* s) {
//	int len = strlen(s);
//	if (len < 3)
//		return s;
//	char* p1 = (char*)malloc(len + 1);
//	int i = 0;
//	int flag = 1;
//	while (*s)
//	{
//		if (*s == *(s + 1))
//			flag++;
//		else
//		{
//			if (flag >= 3)
//			{
//				int j = 0;
//				for (j = 0; j < 2; j++)
//				{
//					p1[i] = *(s - j);
//					i++;
//				}
//			}
//			else
//			{
//				int j = 0;
//				for (j = 0; j < flag; j++)
//				{
//					p1[i] = *(s - j);
//					i++;
//				}
//			}
//			flag = 1;
//		}
//		s++;
//	}
//	p1[i] = '\0';
//	return p1;
//}
//int main()
//{
//	char p[] = "leeetcode";
//	char* p1 = makeFancyString(p);
//	printf("%s", p1);
//	return 0;
//}

